import axiosInstance from './config';
import common from './common';
import order from './modules/order';

// 开发插件 https://cn.vuejs.org/v2/guide/plugins.html#%E5%BC%80%E5%8F%91%E6%8F%92%E4%BB%B6
const install = (Vue) => {
  // 所有模块的 request 集合
  const modulesApi = {
    order,
  };
  // 重新封装请求参数
  const instanceMethod = {
    get: (url, params = {}, config = {}) => axiosInstance.get(url, { params, ...config }),
    post: (url, params = {}, config = {}) => axiosInstance.post(url, params, config),
  };
  // 所有 api
  const api = {
    // 把公共模块的接口放到对应 api[接口函数名] 中: this.$api.getCommonData()
    ...common.request(instanceMethod),
  };
  // 把各个模块的接口放到对应 api[模块名][接口函数名] 中: this.$api.moduleName.getModuleData()
  Object.keys(modulesApi).forEach((prop) => {
    api[prop] = modulesApi[prop].request(instanceMethod);
  });
  // 将 api 挂载到 this.$api
  Vue.prototype.$api = api;
};

export default {
  install,
  // $api: api, // 方便直接引入使用
};
